1. Field of the Invention
The present invention relates generally to software development tools and more particularly to a high-level, application-class specific user interface development tool.
2. Description of the Prior Art
User interface tools assist software application developers in the design and development of computer applications software. There are two groups that interact with computer applications software. The first group, noted above, are application developers. This group is responsible for creating the software according to design specifications which may be driven by the developers themselves, or the second group--the application software end-users. The relationship between the two groups is dynamic in that each contribute input and feedback to the other.
Typically, these tools are general-purpose. That is, the tools enable the development of a very broad range of user interface styles. One disadvantage is that these tools often contain hundreds of functions in order to be general-purpose. The developer must acquire a working knowledge of most of these functions to use the tool. This leaves the developer in the unenviable position of first learning the intricacies of the tool, which can take weeks or months, before any development can begin.
A second disadvantage of the general-purpose user interface tool, stemming again from the generality, is that the tool does not constrain the developer to use the tool in a way that yields consistent appearance and behavior among the common elements of the application's user interface. Achieving consistency and avoiding arbitrary differences among common elements thus becomes an arduous task of writing and revising style guides and manually reviewing all parts of the user interface to ensure conformance with the style guide. However, style guides are inherently difficult to enforce since the guide is a mere suggestion. There is no mechanism to impose a particular style upon the developer. Further, ensuring user interface consistency is particularly challenging given the myriad options available to the developer in today's user interface tools.
These disadvantages are compounded if the application being developed is large enough to require the efforts of multiple developers. The developers, who often are not user interface designers and may be located at geographically remote locations, must scale the steep learning curve of the general-purpose user interface tool. Each developer arrives at a unique understanding of how to achieve the desired standard style with the numerous graphic and display elements which, in various combinations, define a given user interface application. Further, the developers, each having a unique approach to standardizing the application's style, must coordinate all design and implementation decisions in an attempt to avoid arbitrary inconsistencies in the user interface. Thus, development of large applications with multiple developers requires added care since this situation is inherently disposed to application inconsistencies.
Several general-purpose user interface tools have lengthy development cycles consisting of repeated editing, recompilation, and re-linking of the application before the user interface can be initially viewed or subsequently modified. Because user interface development is highly iterative, rapid prototyping is essential to effective development. Yet many general-purpose user interface tools fail to facilitate rapid initial development of partially functioning prototypes. Furthermore, these tools lack the ability to quickly apply changes to an existing prototype. Without quick feedback, the developer is at a disadvantage during the development cycle.
The aforementioned disadvantages and limitations retard application development and place the usability of the application at serious risk, particularly for large interactive applications. It would be a great benefit if a development tool could be designed to handle the hundreds of functions and myriad style options involved in interface development, while allowing the systems developer more time to concentrate on perfecting the interface consistency and overall performance.